package com.usa.tool;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExtractor {
    public static void main(String[] args) {
        String text = "        @Jecky 1760001800-1760001899（WOW账号：1006100019 验证码610002）\n" +
                "        @Cario 1760001900-1760001999（WOW账号：1006100021验证码610003）\n" +
                "        @Byron 1760002000-1760002099（WOW账号：1006100020 验证码610003）\n" +
                "        \n" +
                "        iOS\n" +
                "@John 1760002600-1760002699（WOW账号：1006100022验证码610003）\n" +
                "        @Luke 1760002700-1760002799（WOW账号：1006100023验证码610003）\n" +
                "        @Gerack 1760002800-1760002899（WOW账号：1006100024验证码610003）\n" +
                "        @Tom 1760002900-1760002999（WOW账号：1006100025验证码610003）\n" +
                "        @Yaso 1760003000-1760003099（WOW账号：1006100026验证码610003）\n" +
                "        @Steve 1760003100-1760003199（WOW账号：1006100027验证码610003）\n" +
                "        @David 1760005900-1760005999（WOW账号：1006100032 验证码610004）\n" +
                "      - 测试：200/人\n" +
                "        @Bob  1760001000-1760001199（WOW账号：1006100015 验证码610002）\n" +
                "        @Ryan  1760001600-1760001799（WOW账号：1006100017 验证码610002） \n" +
                "        @Echo  1760001200-1760001399（WOW账号：1006100016 验证码610002）\n" +
                "        @Alex   1760003600-1760003799（WOW账号：1006100018 验证码610002）\n" +
                "        \n" +
                "      - 策划设计：100/人\n" +
                "        @Greg  1760006001 ～ 1760006099（WOW账号：1006100031验证码610004）\n" +
                "        @Lyssie  1760006101 ～ 1760006199（WOW账号：1006100030验证码610004）\n" +
                "        @Bruce  1760006201 ～ 1760006299（WOW账号：1006100028验证码610003）\n" +
                "        @Sylvua  1760006301 ～ 1760006399（WOW账号：1006100029验证码610003）\n" +
                "        \n" +
                "        @Vincent  1760006501 ～ 1760006600\n" +
                "        @Helen  1760006701 ～ 1760006800\n" +
                "        \n" +
                "        @Tomin 1760003400-1760003499\n" +
                "        @Irene 1760003600-1760003699\n" +
                "        @Sid 1760003900-1760003999W\n" +
                "        @Yemil 1760005700-1760005799\n" +
                "        @Leo 1760006400-1760006499"; // 将你的文本内容放在这里

        // 正则表达式匹配@后面的角色ID和数字范围
        Pattern pattern = Pattern.compile("@(\\w+)\\s+(\\d+)[～-](\\d+)");
        Matcher matcher = pattern.matcher(text);

        StringBuilder sb = new StringBuilder();

        while (matcher.find()) {
            String roleID = matcher.group(1);
            String startRange = matcher.group(2);
            String endRange = matcher.group(3);

            // 转换数字范围为正则表达式
            String regexRange = convertToRegexRange(startRange, endRange);

            sb.append(regexRange).append("|").append(roleID).append(";");

        }
        System.out.println(sb);
    }

    private static String convertToRegexRange(String start, String end) {
        StringBuilder regex = new StringBuilder();
        regex.append(start.substring(0, 5)); // 前5位数字通常是相同的

        // 特殊处理最后一个数字
        if (start.length() == 6 && end.length() == 6) {
            regex.append("[0246]");
        } else {
            // 处理后四位数字的变化，但最后两位用**代替
            for (int i = 5; i < start.length() - 2; i++) {
                if (start.charAt(i) == end.charAt(i)) {
                    regex.append(start.charAt(i));
                } else {
                    regex.append("[").append(start.charAt(i)).append("-").append(end.charAt(i)).append("]");
                }
            }
            regex.append("**"); // 使用**代替最后两位数字
        }

        return regex.toString();
    }
}
